home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / lib / mathlib / psort / demorules < prev    next >
Encoding:
Text File  |  1994-08-02  |  8.3 KB  |  250 lines

  1. #
  2. # Some rules for automagically making the demos work
  3. #
  4. # The demos should only define any source files they need
  5. # (CFILES, FFILES, ASFILES, HFILES, etc), the flags they
  6. # need to link with (LCINCS, LCDEFS, LLDLIBS, etc), and
  7. # a rule for building the TARGET (if any); for example
  8. #
  9. # ${TARGETS}: ${OBJECTS}
  10. #    ${CCF} -o $@ ${OBJECTS} ${LDFLAGS}
  11. #
  12. # The demodefs file is assumed to be already included;
  13. # this file installs everything properly.
  14. #
  15. # Source code will be installed in /usr/demos/src when a 'make sales'
  16. # is done UNLESS the variable NOSOURCE is set to some string.  Demos
  17. # must properly define HFILES for this to work, and must also define
  18. # OTHERSOURCE if there are extraneous files to be installed (README's,
  19. # for example)
  20. #
  21.  
  22. ${COMMONPREF}default: ${TARGETS}
  23.  
  24. include ${COMMONRULES}
  25.  
  26. #
  27. # Descend into subdirectories doing makes.
  28. # Depends on TARGET being set to the target to make in each
  29. # subdirectory, and SUBDIRS to be set to the list of directories.
  30. # The DESCEND macro defined in demodefs will define TARGET and
  31. # call this for you.
  32. #
  33. descend:
  34.     @for D in ${SUBDIRS}; do \
  35.         if [ -d $$D ]; then \
  36.         echo "====\tcd $$D; ${MAKE} ${TARGET}"; \
  37.         ( cd $$D ; ${MAKE} ${TARGET}); \
  38.         fi \
  39.     done
  40. #
  41. # We need to install the following stuff:
  42. # -- binary(s)
  43. # -- buttonfly file(s)
  44. # -- info slide(s)
  45. # -- data file(s) (if any)
  46. #
  47. ${COMMONPREF}install: ${COMMONPREF}default
  48.     @if test "${TARGETS}" != ""; then \
  49.         DIDB='${IDBTAG}' ${MAKE} -f ${MAKEFILE} targinst; \
  50.     fi
  51.     @if test "${AREAS}" != ""; then \
  52.         DIDB='${IDBTAG}' ${MAKE} -f ${MAKEFILE}\
  53.             bflyinst infoinst; \
  54.     fi; \
  55.     if test "${DATAFILES}" != ""; then \
  56.         DIDB='${IDBTAG}' ${MAKE} -f ${MAKEFILE} datainst; \
  57.     fi
  58.  
  59. #
  60. # Sales installs everything the same as install, except with different
  61. # IDB tags.  SALESIDB must always be set in the demo's Makefile, and
  62. # DATAIDB must be set if there is any data associated.
  63. #
  64. ${COMMONPREF}sales: ${COMMONPREF}default
  65.     @if test "${TARGETS}" != ""; then \
  66.         DIDB='${SALESIDB}' ${MAKE} -f ${MAKEFILE} targinst; \
  67.     fi
  68.     @if test "${AREAS}" != ""; then \
  69.         DIDB='${SALESIDB}' ${MAKE} -f ${MAKEFILE}\
  70.             bflyinst infoinst; \
  71.     fi; \
  72.     if test "${DATAFILES}" != ""; then \
  73.         DIDB='${DATAIDB}' ${MAKE} -f ${MAKEFILE} datainst; \
  74.     fi; \
  75.     if test "${MOREDATAFILES}" != ""; then \
  76.         DIDB='${MOREDATAIDB}' ${MAKE} -f ${MAKEFILE} moredatainst; \
  77.     fi; \
  78.     if test "${NOSOURCE}" = ""; then \
  79.         ${MAKE} -f ${MAKEFILE} ${COMMONPREF}source; \
  80.     fi; \
  81.     if test "${THELINKDIR}" != ""; then \
  82.         ${MAKE} -f ${MAKEFILE} thelinkdirinst ; \
  83.     fi; \
  84.     if test "${LINKDIRS}" != ""; then \
  85.         ${MAKE} -f ${MAKEFILE} linkdirinst ; \
  86.     fi; \
  87.     if test "${LINKFILES}" != ""; then \
  88.         ${MAKE} -f ${MAKEFILE} linkfileinst ; \
  89.     fi
  90.  
  91. #
  92. # targinst is responsible for installing the TARGET (there is only
  93. # one, even though the variable is ${TARGETS} into /usr/demos/bin
  94. #
  95. targinst:
  96.     ${INSTALL} -F /usr/demos/bin -u demos -g demos -m 755 ${DIDB} ${TARGETS}
  97.  
  98. #
  99. # bflyinst installs the buttonfly files.  A demo can have separate
  100. # buttonfly files for each area it gets installed into.  For example,
  101. # suppose a demo named 'bleuch' belonged to areas 'product/ick',
  102. # 'market/ack', and 'market/foo'.  Then if a file named 'm_bleuch_ick'
  103. # exists in the source tree, it will be installed as the buttonfly
  104. # file for bleuch in the prod/ick area.  Otherwise, the generic
  105. # m_bluech file gets installed there.  The same rules apply for the
  106. # other areas bleuch relates to.
  107. #
  108. bflyinst:
  109.     @for i in ${AREAS}; do\
  110.         for j in ${TARGETS}; do\
  111.             BFLYFILE=m_"$$j"_`basename $$i`; \
  112.             if test -f $$BFLYFILE; then \
  113.                 echo ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
  114.                     -m 644 ${DIDB} -src $$BFLYFILE .m_$$j; \
  115.                 ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
  116.                     -m 644 ${DIDB} -src $$BFLYFILE .m_$$j; \
  117.             elif test -f m_$$j; then \
  118.                 echo ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
  119.                     -m 644 ${DIDB} -src m_$$j .m_$$j; \
  120.                 ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
  121.                     -m 644 ${DIDB} -src m_$$j .m_$$j; \
  122.             fi; \
  123.         done; \
  124.     done
  125.  
  126. #
  127. # Info slides work a lot like the buttonfly files.  See the discussion
  128. # above.
  129. #
  130. infoinst:
  131.     @for i in ${AREAS}; do\
  132.         for j in ${TARGETS}; do\
  133.             INFOFILE=$$j.`basename $$i`.info; \
  134.             if test -f $$INFOFILE; then \
  135.                 echo ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
  136.                     -m 755 ${DIDB} -src $$INFOFILE $$j.info; \
  137.                 ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
  138.                     -m 755 ${DIDB} -src $$INFOFILE $$j.info; \
  139.             elif test -f $$j.info; then \
  140.                 echo ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
  141.                     -m 755 ${DIDB} $$j.info; \
  142.                 ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
  143.                     -m 755 ${DIDB} $$j.info; \
  144.             fi; \
  145.         done; \
  146.     done
  147.  
  148. #
  149. # Data files work like ${TARGETS}, only there can be more than one of
  150. # them.  Also, their mode isn't changed (it is assumed to be correct
  151. # in the source tree)
  152. #
  153. datainst: ${DATAFILES}
  154.     ${INSTALL} -u demos -g demos -m 755\
  155.             ${DIDB} -dir /usr/demos/data/${DATADIR}
  156.     @for j in ${DATAFILES}; do\
  157.         name=`basename $$j`; \
  158.         echo ${INSTALL} -F /usr/demos/data/${DATADIR} -u demos -g demos \
  159.             ${DIDB} -src $$j $$name; \
  160.         ${INSTALL} -F /usr/demos/data/${DATADIR} -u demos -g demos \
  161.             ${DIDB} -src $$j $$name; \
  162.     done
  163.  
  164. moredatainst: ${MOREDATAFILES}
  165.     @for j in ${MOREDATAFILES}; do\
  166.         name=`basename $$j`; \
  167.         echo ${INSTALL} -F /usr/demos/data/${DATADIR} -u demos -g demos \
  168.             ${DIDB} -src $$j $$name; \
  169.         ${INSTALL} -F /usr/demos/data/${DATADIR} -u demos -g demos \
  170.             ${DIDB} -src $$j $$name; \
  171.     done
  172.  
  173. #
  174. # Install all the various source files; this includes:
  175. #   SOURCE:  defined from CFILES/HFILES/C++FILES, etc
  176. #   OTHERSOURCE:  defined by the demo's Makefile if it has other
  177. #      things to be installed (like README files)
  178. #   MAKEFILE:  this Makefile
  179. #   m_*: any buttonfly files
  180. #   *.info: any information slides
  181. #
  182. ${COMMONPREF}source: ${SOURCES} ${OTHERSOURCE}
  183.     @directory=`pwd | sed 's_.*usr/src/cmd/demo/*__'`; \
  184.     echo ${INSTALL} -dir -m 755 -u demos -g demos \
  185.         ${SOURCEIDB} /usr/demos/src/$$directory; \
  186.     ${INSTALL} -dir -m 755 -u demos -g demos \
  187.         ${SOURCEIDB} /usr/demos/src/$$directory; \
  188.     echo ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
  189.         -m 644 ${SOURCEIDB} ${MAKEFILE}; \
  190.     ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
  191.         -m 644 ${SOURCEIDB} ${MAKEFILE}; \
  192.     set -- ${SOURCES} ${OTHERSOURCE} ;\
  193.     if test $$# != 0 ; then \
  194.         echo ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
  195.             -m 644 ${SOURCEIDB} $$*; \
  196.         ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
  197.             -m 644 ${SOURCEIDB} $$*; \
  198.     fi; \
  199.     if ( `ls m_* >/dev/null 2>&1` ) ; then \
  200.         echo ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
  201.             -m 644 ${SOURCEIDB} m_*; \
  202.         ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
  203.             -m 644 ${SOURCEIDB} m_*; \
  204.     fi; \
  205.     if ( `ls *.info >/dev/null 2>&1` ) ; then \
  206.         echo ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
  207.             -m 644 ${SOURCEIDB} *.info; \
  208.         ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
  209.             -m 644 ${SOURCEIDB} *.info; \
  210.     fi
  211.  
  212. #
  213. thelinkdirinst: ${THELINKDIR}
  214.     ${INSTALL} -dir -m 755 -u demos -g demos ${SALESIDB} \
  215.         /usr/demos/data/${LINKTARGETDIR}/${TARGETS}
  216.     @FILES=`cd ${THELINKDIR}; /bin/ls` ; \
  217.     for j in $$FILES ; do \
  218.         echo ${INSTALL} -F /usr/demos/data/${LINKTARGETDIR}/${TARGETS} \
  219.         -u demos -g demos ${SALESIDB} -src ${THELINKDIR}/$$j $$j ; \
  220.         ${INSTALL} -F /usr/demos/data/${LINKTARGETDIR}/${TARGETS} \
  221.         -u demos -g demos ${SALESIDB} -src ${THELINKDIR}/$$j $$j ; \
  222.     done
  223.  
  224. linkdirinst: ${LINKDIRS}
  225.     @if [ ${LINKTARGETDIR}X != X ]; then \
  226.         echo ${INSTALL} -dir -m 755 -u demos -g demos \
  227.             ${SALESIDB} /usr/demos/data/${LINKTARGETDIR} ; \
  228.         ${INSTALL} -dir -m 755 -u demos -g demos \
  229.             ${SALESIDB} /usr/demos/data/${LINKTARGETDIR} ; \
  230.     fi
  231.     @for i in ${LINKDIRS}; do \
  232.         echo ++++ Link directory $$i ; \
  233.          echo ${INSTALL} -dir -m 755 -u demos -g demos \
  234.             ${SALESIDB} /usr/demos/data/${LINKTARGETDIR}/$$i ; \
  235.          ${INSTALL} -dir -m 755 -u demos -g demos \
  236.             ${SALESIDB} /usr/demos/data/${LINKTARGETDIR}/$$i ; \
  237.         FILES=`cd $$i; /bin/ls` ; \
  238.         for j in $$FILES ; do \
  239.             echo ${INSTALL} -F /usr/demos/data/${LINKTARGETDIR}/$$i \
  240.             -u demos -g demos ${SALESIDB} -src $$i/$$j $$j ; \
  241.             ${INSTALL} -F /usr/demos/data/${LINKTARGETDIR}/$$i \
  242.             -u demos -g demos ${SALESIDB} -src $$i/$$j $$j ; \
  243.         done ; \
  244.     done
  245.  
  246. linkfileinst: ${LINKFILES}
  247.     ${INSTALL} -F /usr/demos/data/${LINKTARGETDIR} \
  248.         -u demos -g demos ${SALESIDB} ${LINKFILES}
  249.  
  250.